package demo10_flyweight;


import demo10_flyweight.model.Attributes;
import demo10_flyweight.model.Material;
import demo10_flyweight.model.Priture;
import demo10_flyweight.util.FlyweightFactory;

/**
 * Sunny软件公司欲开发一个多功能文档编辑器，在文本文档中可以插入图片、动画、视频
 * 等多媒体资料，为了节约系统资源，相同的图片、动画和视频在同一个文档中只需保存
 * 一份，但是可以多次重复出现，而且它们每次出现时位置和大小均可不同。试使用享元
 * 模式设计该文档编辑器。
 */
public class Client {


    public static void main(String[] args) {

        //模拟添加图片
        Material p1 = FlyweightFactory.addMaterial(new Priture("java.jpg"));
        Material p2 = FlyweightFactory.addMaterial(new Priture("java.jpg"));
        //判断是否同一个文件
        System.out.println("p1.equal(p2):" + p1.equals(p2));
        System.out.println("当前size:" + FlyweightFactory.size());

        //模拟添加图片
        Material p3 = FlyweightFactory.addMaterial(new Priture("php.jpg"));
        System.out.println("p1.equal(p3):" + p1.equals(p3));
        System.out.println("当前size:" + FlyweightFactory.size());

        //位置
        p1.display(new Attributes("中间","大尺寸"));
        p3.display(new Attributes("顶部","小尺寸"));
        p2.display(new Attributes("底部","小尺寸"));


    }


}
